// pages/category/category.js
import {request} from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //左侧菜单数据
    leftMenuList:[],
    //右侧的商品数据
    rightContent:[],
    // 激活左侧菜单索引
    currentIndex:0,
    //置顶右侧商品内容
    scrollTop:0,
  },
  //接口的返回数据
  Cates:[],

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 0.web中的本地存储和小程序中的本地存储的区别
    // 1.写代码的方式不一样
    //   web:localStorage.setItem("key","value");localStorage.getItem("key","value");
    //   小程序：wx.setStorageSync("key","value");wx.getStorageSync("key","value");
    // 2.存数据时 有没有做数据转换
          // web：不管存入的是什么类型的数据，最终都要调用以下 toString(),把数据变成了字符串 再存进去
          // 小程序：不存在 类型转换的操作 存什么类型数据进去，获取就是什么类型的数据
          
    // 1.先判断一下本地存储中有没有旧数据
    // {time:Date.now(),data:[...]}
    // 2.没有旧数据 直接发送新请求
    // 3.有旧数据 同时 旧的数据也没有过期就使用 本地存储中的数据即可
    
    // 1.获取本地存储中的数据（小程序中也是存在本地存储 技术）
    const Cates = wx.getStorageSync("cates");
    //2.判断
    if(!Cates){
      //不存在 发送请求获取数据
      this.getCates();
    }else{
      // 有旧数据 定义过期时间 10s改成5分钟
      if(Date.now()-Cates.time>1000*10){
        //重新发送请求
        this.getCates();
      }else{
        //可以使用旧数据
        this.Cates =Cates.data;
        let leftMenuList = this.Cates.map(e=>e)
        let rightContent = this.Cates[0].children
        this.setData({
          leftMenuList,
          rightContent
        })
      }

    }
  },
  // 获取分类数据
  async getCates(){
    // request({
    //   url:"/categories"
    // })
    // .then(res=>{
    //   console.log(res);
    //   this.Cates=res;

    //   // 把接口的数据存入到本地存储中
    //   wx.setStorageSync("cates", {time:Date.now(),data:this.Cates});

    //   //构造左侧的大菜单数据
    //   let leftMenuList = this.Cates.map(e=>e)
    //   //构造右侧的商品数据
    //   let rightContent = this.Cates[0].children
    //   console.log(leftMenuList,rightContent)
    //   this.setData({
    //     leftMenuList,
    //     rightContent
    //   })
    // })

    // 使用es7的async await来发送请求
    const res = await request({url:"/categories"})
    this.Cates=res;
    // 把接口的数据存入到本地存储中
    wx.setStorageSync("cates", {time:Date.now(),data:this.Cates});

    //构造左侧的大菜单数据
    let leftMenuList = this.Cates.map(e=>e)
    //构造右侧的商品数据
    let rightContent = this.Cates[0].children
    console.log(leftMenuList,rightContent)
    this.setData({
      leftMenuList,
      rightContent
    })
  },
  // 点击激活菜单栏
  activeIdx(options){
    console.log(options)
    // 1.获取被点击的下标
    // 2.给data里的currentIndex赋值
    const {index} = options.currentTarget.dataset
    let rightContent = this.Cates[index].children
    this.setData({
      currentIndex:index,
      //刷新右侧的商品数据
      rightContent,
      // 重新设置，右侧内容置顶
      scrollTop:0
    })
  }
})